package leetcode_题库;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Ding
 * @create 2022/8/19 21:04
 */
public class _121_买卖股票的最佳时机 {
    public static void main(String[] args) {
        int[] prices = new int[]{7, 1, 5, 3, 6, 4};

        System.out.println(getMaxMoney(prices));
    }

    private static int getMaxMoney(int[] prices) {
        //维护变量：最小金额，初始值设定为最高
        int minPrice = Integer.MAX_VALUE;
        //最大利润，默认为0
        int maxProfit = 0;

        for (int i = 0; i < prices.length; i++) {
            if (prices[i] < minPrice){
                //找到了更小值，就替换
                minPrice = prices[i];
                continue;
            }
            //当不是最小值时，也就是当前price[i]大于最小值时，才有利润。
            //动态规划体现在了，我们拿着当前值和最小值做差，如果差值（利润）比最大利润还大，才替换。否则不替换
            //也就是说，动态规划是比较许多天的情况
            if (maxProfit < prices[i] - minPrice){
                maxProfit = prices[i] - minPrice;
            }
        }

        return maxProfit;
    }
}
